/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package op;

/**
 *
 * @author Jonatas
 */
public class LigacaoResumida implements Comparable<LigacaoResumida>{

    private Telefone origem;
    private Telefone destino;
    private double valorTotal;
    private int numLigacoes;
    private int duracaoTotalSegundos;
    private String tipoDeLigacao;
    private boolean isACobrar;
    private String plano;
    private double tarifaPlano;

    public LigacaoResumida(Telefone origem, Telefone destino, double valorTotal, int numLigacoes, int duracaoTotalSegundos, String tipoDeLigacao, boolean isACobrar) {
        this.origem = origem;
        this.destino = destino;
        this.valorTotal = valorTotal;
        this.numLigacoes = numLigacoes;
        this.duracaoTotalSegundos = duracaoTotalSegundos;
        this.tipoDeLigacao = tipoDeLigacao;
        this.isACobrar = isACobrar;
    }

    public boolean isIsACobrar() {
        return isACobrar;
    }

    public void setIsACobrar(boolean isACobrar) {
        this.isACobrar = isACobrar;
    }

    public String getTipoDeLigacao() {
        return tipoDeLigacao;
    }

    public void setTipoDeLigacao(String tipoDeLigacao) {
        this.tipoDeLigacao = tipoDeLigacao;
    }

    public Telefone getDestino() {
        return destino;
    }

    public void setDestino(Telefone destino) {
        this.destino = destino;
    }

    public int getDuracaoTotalSegundos() {
        return duracaoTotalSegundos;
    }

    public void setDuracaoTotalSegundos(int duracaoTotalSegundos) {
        this.duracaoTotalSegundos = duracaoTotalSegundos;
    }

    public int getNumLigacoes() {
        return numLigacoes;
    }

    public void setNumLigacoes(int numLigacoes) {
        this.numLigacoes = numLigacoes;
    }

    public Telefone getOrigem() {
        return origem;
    }

    public void setOrigem(Telefone origem) {
        this.origem = origem;
    }

    public double getValorTotal() {
        return valorTotal;
    }

    public void setValorTotal(double valorTotal) {
        this.valorTotal = valorTotal;
    }

    public String getTempoEmHoras() {
        return EntradaAbstrata.getDuracaoHoras(duracaoTotalSegundos);
    }

    public int compareTo(LigacaoResumida o) {

        if(origem.equals(o.getOrigem())) {
            return -(new Double(this.valorTotal).compareTo(new Double(o.valorTotal)));
        }

        return origem.compareTo(o.origem);

    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final LigacaoResumida other = (LigacaoResumida) obj;
        if (this.origem != other.origem && (this.origem == null || !this.origem.equals(other.origem))) {
            return false;
        }
        if (this.destino != other.destino && (this.destino == null || !this.destino.equals(other.destino))) {
            return false;
        }
        if (this.valorTotal != other.valorTotal) {
            return false;
        }
        if (this.numLigacoes != other.numLigacoes) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 17 * hash + (this.origem != null ? this.origem.hashCode() : 0);
        hash = 17 * hash + (this.destino != null ? this.destino.hashCode() : 0);
        hash = 17 * hash + (int) (Double.doubleToLongBits(this.valorTotal) ^ (Double.doubleToLongBits(this.valorTotal) >>> 32));
        hash = 17 * hash + this.numLigacoes;
        return hash;
    }

    
    
}
